Simulink更改运行参数
最近正在用Simulink仿真时遇到一个问题,就是要在模型运行时,需要在线修改模型中的模块的参数。用M函数总报错,尝试着用一下S函数试一试,居然可以。所以分享一下,希望对有相同问题的有帮助。
建立Simulink模型
打开Simulink,搭建一个简单的模型。我这里直接用Sin波形做实验。其他的基本一样。具体找模块的步骤我就省略了。 Matlab有自带一个S函数的模板,在命令行输入edit sfuntmpl就会出现。将其保存到与建立的Simulink模型同一文件夹内,改个函数名即可。在Simulink中点击S函数。 我这里命名的S函数是testsf。剩下的就是改写S函数了,我也是刚学S函数,我把我学S函数的链接贴出来。 S函数 S函数指南 有这两个基本就可以用S函数了。 下面就是我对函数的改写代码。主要就是对输入输出个数的更改,其他的函数不需要更改保持默认就行。
function [sys,x0,str,ts,simStateCompliance]=mdlInitializeSizes
sizes = simsizes;
sizes.NumContStates = 0;
sizes.NumDiscStates = 0;
sizes.NumOutputs = 0;
sizes.NumInputs = 1;
sizes.DirFeedthrough = 1;
sizes.NumSampleTimes = 1; % at least one sample time is needed
sys = simsizes(sizes);
x0 = [];
str = [];
ts = [0 0];
simStateCompliance = 'UnknownSimState';
function sys=mdlOutputs(t,x,u)
if u |